﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
namespace Kingdom_of_the_Dragon
{
    class Warrior : LiveObject
    {        
        
        private bool     tocando = false;
        private bool     montado = true;

        
              
        public Warrior(Texture2D texWarrior, Vector2 posWarrior, int speed)
        {
            this.position = posWarrior;
            this.texture = texWarrior;
            this.speed = 5;            
        }

        //public void Draw(SpriteBatch spriteBratch, Vector2 cameraorigem, Dragon drg)
        //{
        //    spriteBratch.Begin();
        //    if (montado)
        //    {
        //        //spriteBratch.Draw(texture, new Rectangle(((int)cameraorigem.X + (int)drg.Position.X), ((int)cameraorigem.Y + (int)drg.Position.Y), (int)texture.Width, (int)texture.Height),
        //        //    new Rectangle(0, 0, texture.Width, texture.Height),
        //        //    Color.White, (drg.radians_direct - (float)Math.PI/2),
        //        //    new Vector2(texture.Width / 2, texture.Height / 2),
        //        //    drg.OlhandoDireita ? SpriteEffects.None : SpriteEffects.FlipVertically, 0f);
        //    }
        //    else
        //    {
        //        spriteBratch.Draw(texture, new Rectangle(((int)cameraorigem.X + (int)position.X), ((int)cameraorigem.Y + (int)position.Y), (int)texture.Width, (int)texture.Height),
        //            new Rectangle(0, 0, texture.Width, texture.Height),
        //            Color.White, 0,
        //            new Vector2(texture.Width / 2, texture.Height / 2),
        //            drg.OlhandoDireita ? SpriteEffects.None : SpriteEffects.FlipVertically, 0f);
        //    }
        //    spriteBratch.End();
        //}

        public void Mover_Update(KeyboardState kAtual, KeyboardState kPrevious, Keys cima, Keys baixo, Keys esquerda, Keys direita, Keys espaco, Dragon Drg)
        {
            #region Comentado
            //radians_direct = MathHelper.ToRadians(angle_direct);

            //if (kAtual.IsKeyDown(cima))
            //{
            //    if (speed < 100 && olhandoDireita)
            //    { speed++; }
            //    else if (!olhandoDireita && speed > -100)
            //    { speed--; }
                //if (olhandoDireita)
                //{                    
                    //position += new Vector2(((float)Math.Cos(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))) * (speed / 10)), ((float)Math.Sin(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90)))) * (speed / 10));
                //}
                //else
                //{
                //    //position += new Vector2(((float)Math.Cos(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))) * (speed / 10)), ((float)Math.Sin(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90)))) * (speed / 10));
                //}
                
            //}
            //else if (kAtual.IsKeyUp(cima))
            //{
            //    if (speed <= 100 && speed > 0)
            //    {
            //        speed--;
            //        //position += new Vector2(((float)Math.Cos(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))) * (speed / 10)), ((float)Math.Sin(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90)))) * (speed / 10));
            //    }
            //    if (speed >= -100 && speed < 0)
            //    {
            //        speed++;
            //        //position += new Vector2(((float)Math.Cos(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))) * (speed / 10)), ((float)Math.Sin(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90)))) * (speed / 10));
            //    }
            //}
            //if (kAtual.IsKeyDown(baixo) && kPrevious.IsKeyUp(baixo))
            //{
            //    if (olhandoDireita)
            //    {
            //        olhandoDireita = false;
            //        //if (speed < 0)
            //        //{
            //        //    speed *= -1;
            //        //}
            //        //else
            //        //{ }
                    
            //        //angle_direct -= 180;
            //    }
            //    else
            //    {
            //        olhandoDireita = true;
            //        //if (speed > 0)
            //        //{
            //        //    speed *= -1;
            //        //}
            //        //else
            //        //{ }
            //    //angle_direct += 180;
            //    }
            //    //position -= new Vector2((float)Math.Cos(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))), (float)Math.Sin(Convert.ToDouble(MathHelper.ToRadians(angle_direct - 90))));
            //}
            #endregion
            //drg;// = nDrg;
            if (kAtual.IsKeyDown(esquerda))
            {
                position.X--;
                //angle_direct -= 2;
            }
            if (kAtual.IsKeyDown(direita))
            {
                position.X++;
                //angle_direct += 2;
            }
            if (!montado)
            {
                if (position.Y < 500)
                {
                    position.Y += gravity;
                }
            }
            if (kAtual.IsKeyDown(espaco) && kPrevious.IsKeyUp(espaco))
            {
                if (montado)
                {
                    montado = false;
                }
                else if(tocando)
                {
                    montado = true;
                }
            }
           
        }
        //public bool Montado(KeyboardState kAtual, KeyboardState kPrevious, Keys espaco)
        //{
        //    if (kAtual.IsKeyDown(espaco) && kPrevious.IsKeyUp(espaco))
        //    {
        //        if (montado)
        //        {
        //            return false;
        //        }
        //        else
        //        {
        //            return true;
        //        }
        //    }
        //    else
        //    {
        //        return montado;
        //    }
        //}
    }
}
